home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 7 / Amiga Format AFCD07 (Dec 1996, Issue 91).iso / serious / shareware / programming / ixemul-complete / ixemul / utils / ixprefs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-13  |  9.5 KB  |  329 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Kriton Kyrimis
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include <pragmas/exec_pragmas.h>
  26. #include <pragmas/intuition_pragmas.h>
  27. #include <pragmas/gadtools_pragmas.h>
  28. #include <pragmas/graphics_pragmas.h>
  29. #include <pragmas/utility_pragmas.h>
  30.  
  31. #include "ixprefs.h"
  32.  
  33. struct Screen         *Scr = NULL;
  34. UBYTE                 *PubScreenName = NULL;
  35. APTR                   VisualInfo = NULL;
  36. struct Window         *ixprefsWnd = NULL;
  37. struct Gadget         *ixprefsGList = NULL;
  38. struct Menu           *ixprefsMenus = NULL;
  39. struct IntuiMessage    ixprefsMsg;
  40. struct Gadget         *ixprefsGadgets[16];
  41. UWORD                  ixprefsLeft = 0;
  42. UWORD                  ixprefsTop = 11;
  43. UWORD                  ixprefsWidth = 515;
  44. UWORD                  ixprefsHeight = 129;
  45. UBYTE                 *ixprefsWdt = (UBYTE *)"ixprefs";
  46. struct TextAttr       *Font, Attr;
  47. UWORD                  FontX, FontY;
  48. UWORD                  OffX, OffY;
  49. struct TextFont       *ixprefsFont = NULL;
  50.  
  51. UBYTE *networking0Labels[] = {
  52.     (UBYTE *)"Auto detect",
  53.     (UBYTE *)"No networking",
  54.     (UBYTE *)"AS225",
  55.     (UBYTE *)"AmiTCP",
  56.     NULL };
  57.  
  58. UBYTE *profilemethod0Labels[] = {
  59.     (UBYTE *)"Only in program",
  60.     (UBYTE *)"Only in task",
  61.     (UBYTE *)"Profile always",
  62.     NULL };
  63.  
  64. struct NewMenu ixprefsNewMenu[] = {
  65.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  66.     NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)ixprefssave,
  67.     NM_ITEM, (STRPTR)"Use", (STRPTR)"U", 0, 0L, (APTR)ixprefsuse,
  68.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  69.     NM_ITEM, (STRPTR)"About", (STRPTR)"?", 0, 0L, (APTR)ixprefsabout,
  70.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  71.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)ixprefsquit,
  72.     NM_TITLE, (STRPTR)"Edit", NULL, 0, NULL, NULL,
  73.     NM_ITEM, (STRPTR)"Reset to defaults", (STRPTR)"D", 0, 0L, (APTR)ixprefsreset,
  74.     NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, (APTR)ixprefslast,
  75.     NM_ITEM, (STRPTR)"Restore", (STRPTR)"R", 0, 0L, (APTR)ixprefsrestore,
  76.     NM_END, NULL, NULL, 0, 0L, NULL };
  77.  
  78. UWORD ixprefsGTypes[] = {
  79.     BUTTON_KIND,
  80.     BUTTON_KIND,
  81.     BUTTON_KIND,
  82.     CHECKBOX_KIND,
  83.     INTEGER_KIND,
  84.     INTEGER_KIND,
  85.     CHECKBOX_KIND,
  86.     INTEGER_KIND,
  87.     CHECKBOX_KIND,
  88.     CHECKBOX_KIND,
  89.     CHECKBOX_KIND,
  90.     CHECKBOX_KIND,
  91.     CHECKBOX_KIND,
  92.     CYCLE_KIND,
  93.     CHECKBOX_KIND,
  94.     CYCLE_KIND
  95. };
  96.  
  97. struct NewGadget ixprefsNGad[] = {
  98.     6, 116, 63, 11, (UBYTE *)"Save", NULL, GD_savegad, PLACETEXT_IN, NULL, (APTR)savegadClicked,
  99.     222, 116, 63, 11, (UBYTE *)"Use", NULL, GD_usegad, PLACETEXT_IN, NULL, (APTR)usegadClicked,
  100.     443, 116, 63, 11, (UBYTE *)"Cancel", NULL, GD_cancelgad, PLACETEXT_IN, NULL, (APTR)cancelgadClicked,
  101.     4, 15, 26, 11, (UBYTE *)"Translate /", NULL, GD_translateslash, PLACETEXT_RIGHT, NULL, (APTR)translateslashClicked,
  102.     4, 70, 60, 12, (UBYTE *)"Membuf size", NULL, GD_membuf, PLACETEXT_RIGHT, NULL, (APTR)membufClicked,
  103.     4, 83, 60, 12, (UBYTE *)"Red zone size", NULL, GD_redzone, PLACETEXT_RIGHT, NULL, (APTR)redzoneClicked,
  104.     4, 28, 26, 11, (UBYTE *)"Enable stack watcher", NULL, GD_watcher, PLACETEXT_RIGHT, NULL, (APTR)watcherClicked,
  105.     5, 57, 60, 12, (UBYTE *)"Physical blocks build one logical block (for stdio)", NULL, GD_blocks, PLACETEXT_RIGHT, NULL, (APTR)blocksClicked,
  106.     215, 2, 26, 11, (UBYTE *)"Case sensitive pattern matching", NULL, GD_case, PLACETEXT_RIGHT, NULL, (APTR)caseClicked,
  107.     4, 41, 26, 11, (UBYTE *)"Suppress the \"Insert volume in drive\" requester", NULL, GD_suppress, PLACETEXT_RIGHT, NULL, (APTR)suppressClicked,
  108.     4, 2, 26, 11, (UBYTE *)"Allow Amiga wildcards", NULL, GD_amigawildcard, PLACETEXT_RIGHT, NULL, (APTR)amigawildcardClicked,
  109.     215, 15, 26, 11, (UBYTE *)"Do not flush library", NULL, GD_noflush, PLACETEXT_RIGHT, NULL, (APTR)noflushClicked,
  110.     215, 28, 26, 11, (UBYTE *)"Ignore global environment (ENV:)", NULL, GD_ignoreenv, PLACETEXT_RIGHT, NULL, (APTR)ignoreenvClicked,
  111.     214, 83, 162, 13, (UBYTE *)"Network support", NULL, GD_networking, PLACETEXT_RIGHT, NULL, (APTR)networkingClicked,
  112.     214, 70, 26, 11, (UBYTE *)"Create Enforcer hit on trap", NULL, GD_enforcerhit, PLACETEXT_RIGHT, NULL, (APTR)enforcerhitClicked,
  113.     214, 98, 162, 13, (UBYTE *)"Profiling method", NULL, GD_profilemethod, PLACETEXT_RIGHT, NULL, (APTR)profilemethodClicked
  114. };
  115.  
  116. ULONG ixprefsGTags[] = {
  117.     (TAG_DONE),
  118.     (TAG_DONE),
  119.     (TAG_DONE),
  120.     (TAG_DONE),
  121.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  122.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  123.     (TAG_DONE),
  124.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  125.     (TAG_DONE),
  126.     (TAG_DONE),
  127.     (TAG_DONE),
  128.     (TAG_DONE),
  129.     (TAG_DONE),
  130.     (GTCY_Labels), (ULONG)&networking0Labels[ 0 ], (TAG_DONE),
  131.     (TAG_DONE),
  132.     (GTCY_Labels), (ULONG)&profilemethod0Labels[ 0 ], (TAG_DONE)
  133. };
  134.  
  135. static UWORD ComputeX( UWORD value )
  136. {
  137.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  138. }
  139.  
  140. static UWORD ComputeY( UWORD value )
  141. {
  142.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  143. }
  144.  
  145. static void ComputeFont( UWORD width, UWORD height )
  146. {
  147.     Forbid();
  148.     Font = &Attr;
  149.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  150.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  151.     FontX = GfxBase->DefaultFont->tf_XSize;
  152.     Permit();
  153.  
  154.     OffX = Scr->WBorLeft;
  155.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  156.  
  157.     if ( width && height ) {
  158.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  159.             goto UseTopaz;
  160.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  161.             goto UseTopaz;
  162.     }
  163.     return;
  164.  
  165. UseTopaz:
  166.     Font->ta_Name = (STRPTR)"topaz.font";
  167.     FontX = FontY = Font->ta_YSize = 8;
  168. }
  169.  
  170. int SetupScreen( void )
  171. {
  172.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  173.         return( 1L );
  174.  
  175.     ComputeFont( 0, 0 );
  176.  
  177.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  178.         return( 2L );
  179.  
  180.     return( 0L );
  181. }
  182.  
  183. void CloseDownScreen( void )
  184. {
  185.     if ( VisualInfo ) {
  186.         FreeVisualInfo( VisualInfo );
  187.         VisualInfo = NULL;
  188.     }
  189.  
  190.     if ( Scr        ) {
  191.         UnlockPubScreen( NULL, Scr );
  192.         Scr = NULL;
  193.     }
  194. }
  195.  
  196. int HandleixprefsIDCMP( void )
  197. {
  198.     struct IntuiMessage    *m;
  199.     struct MenuItem        *n;
  200.     int            (*func)();
  201.     BOOL            running = TRUE;
  202.  
  203.     while( m = GT_GetIMsg( ixprefsWnd->UserPort )) {
  204.  
  205.         CopyMem(( char * )m, ( char * )&ixprefsMsg, (long)sizeof( struct IntuiMessage ));
  206.  
  207.         GT_ReplyIMsg( m );
  208.  
  209.         switch ( ixprefsMsg.Class ) {
  210.  
  211.             case    IDCMP_REFRESHWINDOW:
  212.                 GT_BeginRefresh( ixprefsWnd );
  213.                 GT_EndRefresh( ixprefsWnd, TRUE );
  214.                 break;
  215.  
  216.             case    IDCMP_CLOSEWINDOW:
  217.                 running = ixprefsCloseWindow();
  218.                 break;
  219.  
  220.             case    IDCMP_GADGETUP:
  221.                 func = ( void * )(( struct Gadget * )ixprefsMsg.IAddress )->UserData;
  222.                 running = func();
  223.                 break;
  224.  
  225.             case    IDCMP_MENUPICK:
  226.                 while( ixprefsMsg.Code != MENUNULL ) {
  227.                     n = ItemAddress( ixprefsMenus, ixprefsMsg.Code );
  228.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  229.                     running = func();
  230.                     ixprefsMsg.Code = n->NextSelect;
  231.                 }
  232.                 break;
  233.         }
  234.     }
  235.     return( running );
  236. }
  237.  
  238. int OpenixprefsWindow( void )
  239. {
  240.     struct NewGadget    ng;
  241.     struct Gadget    *g;
  242.     UWORD        lc, tc;
  243.     UWORD        wleft = ixprefsLeft, wtop = ixprefsTop, ww, wh;
  244.  
  245.     ComputeFont( ixprefsWidth, ixprefsHeight );
  246.  
  247.     ww = ComputeX( ixprefsWidth );
  248.     wh = ComputeY( ixprefsHeight );
  249.  
  250.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  251.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  252.  
  253.     if ( ! ( ixprefsFont = OpenDiskFont( Font )))
  254.         return( 5L );
  255.  
  256.     if ( ! ( g = CreateContext( &ixprefsGList )))
  257.         return( 1L );
  258.  
  259.     for( lc = 0, tc = 0; lc < ixprefs_CNT; lc++ ) {
  260.  
  261.         CopyMem((char * )&ixprefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  262.  
  263.         ng.ng_VisualInfo = VisualInfo;
  264.         ng.ng_TextAttr   = Font;
  265.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  266.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  267.         ng.ng_Width      = ComputeX( ng.ng_Width );
  268.         ng.ng_Height     = ComputeY( ng.ng_Height);
  269.  
  270.         ixprefsGadgets[ lc ] = g = CreateGadgetA((ULONG)ixprefsGTypes[ lc ], g, &ng, ( struct TagItem * )&ixprefsGTags[ tc ] );
  271.  
  272.         while( ixprefsGTags[ tc ] ) tc += 2;
  273.         tc++;
  274.  
  275.         if ( NOT g )
  276.             return( 2L );
  277.     }
  278.  
  279.     if ( ! ( ixprefsMenus = CreateMenus( ixprefsNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  280.         return( 3L );
  281.  
  282.     LayoutMenus( ixprefsMenus, VisualInfo, TAG_DONE );
  283.  
  284.     if ( ! ( ixprefsWnd = OpenWindowTags( NULL,
  285.                 WA_Left,    wleft,
  286.                 WA_Top,        wtop,
  287.                 WA_Width,    ww + OffX + Scr->WBorRight,
  288.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  289.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|CYCLEIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  290.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  291.                 WA_Gadgets,    ixprefsGList,
  292.                 WA_Title,    ixprefsWdt,
  293.                 WA_ScreenTitle,    "ixprefs",
  294.                 WA_PubScreen,    Scr,
  295.                 WA_AutoAdjust,    TRUE,
  296.                 WA_PubScreenFallBack,    TRUE,
  297.                 TAG_DONE )))
  298.     return( 4L );
  299.  
  300.     SetMenuStrip( ixprefsWnd, ixprefsMenus );
  301.     GT_RefreshWindow( ixprefsWnd, NULL );
  302.  
  303.     return( 0L );
  304. }
  305.  
  306. void CloseixprefsWindow( void )
  307. {
  308.     if ( ixprefsMenus      ) {
  309.         ClearMenuStrip( ixprefsWnd );
  310.         FreeMenus( ixprefsMenus );
  311.         ixprefsMenus = NULL;    }
  312.  
  313.     if ( ixprefsWnd        ) {
  314.         CloseWindow( ixprefsWnd );
  315.         ixprefsWnd = NULL;
  316.     }
  317.  
  318.     if ( ixprefsGList      ) {
  319.         FreeGadgets( ixprefsGList );
  320.         ixprefsGList = NULL;
  321.     }
  322.  
  323.     if ( ixprefsFont ) {
  324.         CloseFont( ixprefsFont );
  325.         ixprefsFont = NULL;
  326.     }
  327. }
  328.  
  329.